package cn.tedu.apiday08;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

//测试注解
public class Note {

        public static void main(String[] args) {



    }
}
//1：自定义注解======语法和java有区别
//通过@interface定义Test注解，使用注解时@Test
//定义注解可以出现的位置@Target   并指定值
//定义注解可以存在的生命周期@Retention,并指定值
@Target({ElementType.METHOD,ElementType.PARAMETER,ElementType.TYPE})//Test注解可以用在方法上
    @Retention(RetentionPolicy.SOURCE)//Test注解可以在源码中存在
@interface Test{
    //给注解添加功能====属性    要求使用注解时必须指定name的值+也可以通过default给name设置默认值
    String name() default "";
    //注解的特殊属性value===特殊是因为，使用注解时，可以省略value=的写法+也可以通过default给value设置默认值
    int value() default 100;

}
//2：使用注解
@Test(name = "Hello")//name属性值不再是默认值"" 而是你指定的值
class Hello{
    String name;
    @Test(name = "hi",value = 80)//可以同时给value和name赋值这个时候不能简写value= 
    public  void  hi(@Test(10) String n){//这里注解是默认值""  value的值用的是指定的10只不过简写了value=
        System.out.println("hi");
    }
}
